package samsung.sds.survey.surveyStatistics.service;

import java.util.List;
import java.util.Map;

import samsung.sds.survey.surveyStatistics.model.QuestionEntity;
import samsung.sds.survey.surveyStatistics.model.QuestionOptionEntity;
import samsung.sds.survey.surveyStatistics.model.SurveyEntity;
import samsung.sds.system.common.baseQuery.BaseServiceInterface;

/**
 * @author HuangLong
 * @createDate 2016-01-18
 * 
 * 统计已结束问卷结果业务层接口
 */
public interface SurveyResultStatisticsService extends BaseServiceInterface<SurveyEntity> {
	

    /**
     * 根据问卷surveyId查询所有question
     *
     * @param id 问卷surveyId
     * @return Question集合
     */
    public List<QuestionEntity> getQeustionsBySurveyId(String id); 

    /**
     * 根据问题questionId查询所有option选项
     *
     * @param id 问题questionId
     * @return Question集合
     */
    public List<QuestionOptionEntity> getOptionsByQuestionId(String id); 

    /**
     * 根据数字类型问卷surveyId查询投票所有answer集合
     *
     * @param id 问卷surveyId
     * @return Question集合
    
    public List<QuestionEntity> getAnswer(BigDecimal id); 
 */
    /**
     * 根据数字类型问卷surveyId,及数字类型问题集合，计算数字区间，与区间投票数量和百分比
     *
     * @param questions   QuestionBean集合
     * @param id          问卷surveyId
     * @param rangeCount  区间范围数即将选项划分为几个区间段
     * @return			  Question集合
     
    public List<QuestionEntity> getAnswerCountPercent(
            List<QuestionEntity> questions, BigDecimal id,int rangeCount); 
*/
    /**
     * 查询普通类型count数量与percent百分比
     *
     * @param questions Question集合
     * @param id        问卷surveyId
     * @return          Question集合
     */
    public List<QuestionEntity> getNormalCountPercent(
            List<QuestionEntity> questions, String id); 

    /**
     * 查询YN类型count数量与percent百分比
     *
     * @param questions Question集合
     * @param id        问卷surveyId
     * @return          Question集合
    
    public List<QuestionEntity> getYNCountPercent(
            List<QuestionEntity> questions, BigDecimal id); 
 */
    /**
     * 根据问卷surveyId查询数字类型对应所有question集合
     *
     * @param id 问卷surveyId
     * @return question集合
     */
    public List<QuestionEntity> queryQuestionAnswerCount(String id); 

    /**
     * 根据问卷id查询对应通用和YN类型问卷的所有问题question集合
     *
     * @param surveyid 问卷surveyId
     * @return question集合
     */
    public List<QuestionEntity> queryQuestionsBySurveyId(String surveyid);
    
    /**
     * 查询组合统计所问卷投票所对应的用户
     *
     * @param map
     * @return
     */
    public List<String> queryUserSql(Map<String, String> map); 

    /**
     * 查询每一个组合所对应的票数
     *
     * @param map
     * @return
     */
    public int queryVotedCountByPerGroupingStatics(Map<String, String> map); 

}

